Робота з динамічними структурами.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра інформаційних систем та мереж

Інформація про роботу

Рік:
2008
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
КН

Частина тексту файла

Міністерство освіти і науки України Національний університет «Львівська Політехніка» Кафедра Інформаційних систем та мереж Лабораторна робота №5 на тему Робота з динамічними структурами. Мета роботи: набуття практичних навичок опрацювання таких динамічних структур як зв’язні списки і дерева. Постановка завдання Розробити програми які виконують операції вказані в індивідуальному завданні. Програму для роботи з двонаправленими зв’язними списками. Кожен елемент списку містить посилання на наступний і попередній елемент в списку. Програма повинна забезпечувати ввід і побудову списку. Програму для роботи для роботи з деревами. Кожен елемент дерева містить посилання на батьківський елемент і посилання на елементи-нащадки (необмежена кількість). Програма повинна забезпечувати ввід і побудову дерева. Кожен елемент списку містить інформаційне поле(атрибут) деякого простого типу: символ, стрічка, число. Всі операції над динамічними структурами повинні супроводжуватись відповідним виводом на екран. В контрольних прикладах забезпечити опрацювання структур з 10-20 елементами. Індивідуальні завдання: 8 Доповнення списку з обох кінців. Видалення елемента з дерева за вказаним значенням інформаційного атрибуту.   Текст програми 1: program L5_1; uses Crt; const max=10; type TStack = ^TItem; TItem = record data: integer; next,prev: TStack; end; var c: integer; ch: char; left: boolean; st,tmp,a1: TStack; procedure Add2R(v: integer); Begin New(tmp); tmp^.data:=v; tmp^.next:=nil; st^.next:=tmp; Inc(c); end; procedure Add2L(v: integer); Begin New(tmp); tmp^.data:=v; tmp^.next:=a1^.next; tmp^.prev:=a1; a1^.next:=tmp; Inc(c); end; procedure WriteArr; Begin WriteLn(''); If left then Write('->[') else Write(' ['); st:=a1^.next; while st^.next<>nil do Begin Write(st^.data); st:=st^.next; If st^.next<>nil then Write(','); end; If left then WriteLn('] ') else WriteLn(']<-'); WriteLn; If c>0 then WriteLn(' ',c,' elements in list') else WriteLn(' List is empty'); WriteLn; WriteLn(' [Left]\[Right] - change direction'); WriteLn(' [+] - add random element'); WriteLn(' [Esc] - exit'); end; Begin Randomize; New(a1); New(st); st^.data:=random(100); st^.prev:=a1; st^.next:=nil; a1^.next:=st; c:=1; left:=true; repeat ClrScr; WriteArr; ch:=ReadKey; case ch of #75: left:=true; #77: left:=false; '+': If left then Add2L(random(100)) else Add2R(random(100)); end; until ch=#27; end. Результати виконання програми:    Текст програми 2: program L5_2; uses Crt; type Tree = ^S; S = record data: integer; left, right: tree; end; var del,cnt,c,i: integer; t: Tree; procedure AddElem(n: integer; var tr: Tree); procedure Add(var trr:Tree); begin if trr=nil then begin new(trr); trr^.data:=n; trr^.left:=nil; trr^.right:=nil; end else if trr^.data>n then Add(trr^.left) else if trr^.data<n then Add(trr^.right); end; begin Add(tr); end; procedure WriteTree; procedure WriteItem(p: Tree); Begin if p<>nil then begin if p^.left<>nil then write('L: ') else write('R: '); WriteLn(p^.data); WriteItem(p^.left); WriteItem(p^.right); Inc(c); end; end; Begin c:=0; WriteItem(t); WriteLn(c,' elements in the tree'); WriteLn('Enter item data to delete it(-1 to exit):'); end; procedure Delete(e: integer; var tr: Tree); procedure Go(var tr: Tree); var left,right: Tree; begin if tr<>nil then begin Go(tr^.left); Go(tr^.right); if tr^.data=e then begin left:=tr^.left; right:=tr^.right; dispose(tr); tr:=nil; if left=nil then tr:=right else if right=nil then tr:=left else begin tr:=left; while left^.right<>nil do left:=left^.right; left^.right:=right; end; end...
Антиботан аватар за замовчуванням

30.11.2012 00:11

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини